﻿/**
 * Classe relative à la page options.html
 */
var PageOptions = new (function() {
	var $this = this;
	var Tools = ToolsPrototypeJS;
	
	this.formOptions 			= ElementHTML;
	this.accesDistantFieldset 	= ElementHTML;
	this.menuPluginFtp			= ElementHTML;
	this.menuPluginMultiFreebox	= ElementHTML;
	
	/**
	 * Met à jour l'espace Accès distant
	 */
	function updateAccesDistant() {
		if ($this.formOptions.accesDistant.checked) {
			Tools.removeClassName($this.accesDistantFieldset, "disabled");
			$this.formOptions.accesDistantIP.disabled = false;
			$this.formOptions.accesDistantPort.disabled = false;
		} else {
			Tools.addClassName($this.accesDistantFieldset, "disabled");
			$this.formOptions.accesDistantIP.disabled = true;
			$this.formOptions.accesDistantPort.disabled = true;
		}
	}
	
	/**
	 * Met à jour les pages de configuration de plugins disponibles
	 */
	function updateMenuPlugins() {
		Tools.addClassName($this.menuPluginFtp, "hidden");
		Tools.addClassName($this.menuPluginMultiFreebox, "hidden");
		if ($this.formOptions.pluginFTP.checked) {
			Tools.removeClassName($this.menuPluginFtp, "hidden");
		}
		if ($this.formOptions.pluginMultiFreebox.checked) {
			Tools.removeClassName($this.menuPluginMultiFreebox, "hidden");
		}
	}
	
	/**
	 * Sauvegarde les options
	 */
	this.save = function() {
		var opts = FreeboxLinkAPI.getOptions();
		
		// Sauvegarde du mot de passe s'il est renseigné
		if ($this.formOptions.passwordFreebox.value != "") {
			opts.savePassword = true;
		}
		else {
			opts.savePassword = false;
		}
		
		// Sauvegarde de toute les autres options
		for (var i in opts) {
		
			// Une fonction de l'objet
			if (typeof(opts[i]) == "function") {
				continue;
			}
			var value;
			var element = $this.formOptions[i];
			
			// Element non existant dans le formulaire
			if (!element) {
				continue;
			}
			
			if (element.type == "text" || element.type == "password") {
				value = element.value;
			}
			if (element.type == "checkbox") {
				value = element.checked;
			}
			
			opts[i] = value;
		}
		
		opts.saveToStorage();
		
		updateAccesDistant();
		updateMenuPlugins();

		FreeboxLinkAPI.initContextMenu();
		FreeboxLinkAPI.initPlugins();
	}
	
	/**
	 * Charge les options
	 */
	this.load = function() {
		var opts = FreeboxLinkAPI.getOptions();
		for (var i in opts) {
			var value = opts[i];
			if (typeof(value) != "function") {
				if ($this.formOptions[i]) {
					var element = $this.formOptions[i];
					if (element.type == "text" || element.type == "password") {
						element.value = value;
					}
					if (element.type == "checkbox") {
						element.checked = value;
					}
				}
			}
		}
		updateAccesDistant();
		updateMenuPlugins();
	}
	
	/**
	 * Initialisations
	 */
	this.documentready = function() {
		$this.load();
		
		// On ajoute les évènements sur tous les éléments dispo, pour la sauvegarde
		var opts = FreeboxLinkAPI.getOptions();
		for (var i in opts) {
		
			if (typeof(opts[i]) == "function") {
				continue;
			}
			
			var element = $this.formOptions[i];
			
			if (!element) {
				continue;
			}
			if (element.type == "text" || element.type == "password") {
				Tools.on("input", element, $this.save);
			}
			if (element.type == "checkbox") {
				Tools.on("change", element, $this.save);
			}
		}
		
	}
});

var FreeboxLinkAPI = FreeboxLinkAPI.get();

DocumentHTML.load(PageOptions);
